# -*- coding: utf-8 -*-
# &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
# D7Cl0ud360
# 邮箱: 18656042877@163.com
# 作者：'sugar'
# 公司网址： http://www.dtcloud360.com/
# Copyright 中亿丰信息科技(苏州)有限公司
# 日期：2023/7/17 14:27
# &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
import re
from datetime import date, datetime
from pydantic import Field, BaseModel, validator


class BaseApiModel(BaseModel):
    class Config:
        json_encoders = {
            datetime: lambda v: v.strftime("%Y-%m-%d %H:%M:%S"),
            date: lambda v: v.strftime("%Y-%m-%d")
        }


class BaseNameModel(BaseApiModel):
    name: str = Field(..., title='名称')

    @validator('name')
    def name_validator(cls, name):
        if ' ' in name:
            raise ValueError('名称不能存在空格!')
        if re.findall(r"[!#$%^&*()-+={}<>?/:'\"]", name):
            raise ValueError('名称不能存在特殊字符!')
        return name


class PageQueryModel(BaseApiModel):
    page: int = Field(1, title='当前页数')
    pageSize: int = Field(10, title='每页数量')

